      Ŀ                                   Ŀ
    L *                                 L *
                                         
       v                                     v
   Ŀ                            Ŀ
    m_head                              m_head 
                               
<================================>   <============>
      v                                   v      
    Ŀ     Ŀ     Ŀ           Ŀ    
<===>**<===>**<===>**<===>   <===>**<===>
     Ĵ     Ĵ     Ĵ             Ĵ
      *       *       *               * 
                            
                                          
      / \       / \       / \               / \
      1       2       3  m_data       1 
      \_/       \_/       \_/               \_/


     L  m_head
    Ŀ Ŀ
    *>x
     
    Ŀ
     Ŀ    Ŀ    Ŀ 
    >  *>  *>  *
    *. <*. <*. <
              
    
                             
        / \        / \        / \
        1        2        3 
        \_/        \_/        \_/

==================================================

List L = new List(); // lista de nmeros enteros

 L  m_head
Ŀ Ŀ
*>0
 

==================================================

Integer data = new Integer(1);

data                   _
Ŀ                   / \
.> 1 
                   \_/

==================================================

L.add( data ); >>> [ this.m_head == null ]
===>>> this.m_head = new Node( data );

                    Ŀ
new Node()>  0
                    00 
                    

                 >>> m_next = m_prev = this;
                  Ŀ
                   Ŀ 
new Node()>>  *
                  *0 <
                    
                  

                 >>> m_data = data;
                  Ŀ
                   Ŀ 
                  >  *
                  *. <
                    
                  
data                   
Ŀ                   / \
.> 1 
                   \_/

==================================================

L.add( data ); >>> this.m_head = new Node( data );

 L  m_head        Ŀ
Ŀ Ŀ            Ŀ 
*>x>>  *
            *. <
                    
                  
data                   
Ŀ                   / \
.> 1 
                   \_/

==================================================

data = new Integer(2);

data                   _
Ŀ                   / \
.> 2 
                   \_/

==================================================

L.add( data ); >>> [ this.m_head != null ]
=== >>> Object ignore = new Node( data , m_head.m_prev );

                                    Ŀ
new Node()>  0
                                    00 
                                    

                                    >>> m_data = data;
                                    Ŀ
new Node()>  0<this
                                    0. 
                                    
data                                   
Ŀ                                   / \
.> 2 
                                   \_/

                                    >>> m_data = data;
                      prev
 L  m_head        Ŀ        this
Ŀ Ŀ            Ŀ        Ŀ
*>x>>  *         0<this
            *. <       0. 
                           
                            
                                      
                      / \             / \
                      1             2 <data
                      \_/             \_/

                      prev          >>> this.m_next = prev.m_next;
 L  m_head        Ŀ<Ŀ
Ŀ Ŀ            Ŀ        Ŀ 
*>x>>  *         *
            *. <       0.+<this
                           
                            
                                      
                      / \             / \
                      1             2 <data
                      \_/             \_/

                      prev          >>> this.m_prev = prev;
 L  m_head        Ŀ<Ŀ
Ŀ Ŀ            Ŀ        Ŀ 
*>x>>  *       + *
            *. <<*. <this
                           
                            
                                      
                      / \             / \
                      1             2 <data
                      \_/             \_/

                      prev          >>> prev.m_next = this;
 L  m_head        <Ŀ
Ŀ Ŀ            Ŀ         Ŀ 
*>x>>  *>  *
            *.+<<*. <this
                           
                            
                                      
                      / \             / \
                      1             2 <data
                      \_/             \_/

                      prev          >>> m_next.m_prev = this;
 L  m_head        <Ŀ
Ŀ Ŀ            Ŀ         Ŀ 
*>x>>+ *>  *
            *. <*. <<this
                             
                  
                                      
                      / \             / \
                      1             2 <data
                      \_/             \_/

==================================================

 L  m_head
Ŀ Ŀ
*>*
 
Ŀ
 Ŀ    Ŀ    Ŀ 
>  *>  *>  *
*. <*. <*. <
          

                         
    / \        / \        / \
    1        2        3 
    \_/        \_/        \_/

==================================================